1. Field of the Invention
The invention relates generally to bandwidth allocation, and more particularly to a bandwidth enforcement policy that leverages a bursty characteristic of data transmission signals to efficiently utilize network resources.
2. Description of Related Art
Job control refers to the allocation of bandwidth to control multiple jobs accessing a network on a computer system. Proper enforcement of a bandwidth policy ensures that each job (or different tasks associated with each job) has access to adequate network resources to perform correctly.
Enforcing a network allocation policy is commonly performed by multitasking where more than one running program, or process, is present in the computer at any given time. If a process is unable to continue, its context can be stored and the computer can start or resume the execution of another process. Multitasking is usually performed by a scheduler that may interrupt and resume the execution of other processes. Typically, a driver for a peripheral device suspends execution of a current process if the device is unable to complete an operation immediately, and the scheduler places the process on its queue of sleeping jobs. The process is re-awakened when the peripheral device can complete the operation. Similar suspension and resumption may also apply to inter-process communication, where processes communicate with one another in an asynchronous manner but may need to wait for a reply.
A process that seldom interacts with peripherals or other processes may dominate network resources until the process completes or is halted by manual intervention. The result is that the system is slow to react in a timely manner. This problem may be resolved by allocating each process a period of uninterrupted execution. The process may be assigned different priorities, and the scheduler may allocate varying shares of available execution time to each process on the basis of the assigned priorities. However, network resources may not be effectively utilized because many jobs and tasks do not transfer data at a constant rate or at predictable times.